IAM Proxy
IAM Proxy — это промежуточный компонент, через который осуществляется доступ к защищаемым ресурсам. Он внедряется как шлюз между пользователями (или приложениями) и конечными системами.
Шаги работы IAM Proxy (по логину и паролю)
- Обращение пользователя к целевому ресурсу
- IAM Proxy (oauth2-proxy) перехватывает запрос
- Проверка валидности токена (JWT, access_code, cookie)
- Перенаправление к СУДИР (IdP)
- Аутентификация в IdP
- Перенаправление к IAM Proxy с code
- Обмен code на access_token или JWT
- Создание сессии для пользователя
- Пользователь получает доступ к запрашиваемому ресурсу
Шаги работы IAM Proxy (по mTLS)
- Обращение пользователя к целевому ресурсу
- IAM Proxy (oauth2-proxy) перехватывает запрос
- Анализ сертификата mTLS
- Проверка сертификата mTLS с сертификатом из CA (СУДИР)
- Создание сессии для пользователя
- Пользователь получает доступ к запрашиваемому ресурсу
- Клиент - IAM Proxy - API
- Прокси валидирует Bearer access_token
- Проверяет scope, aud, exp
- Отбрасывает заголовки, которые пришли от клиента, и сам выставляет X-User-Id в соответствии со своими настройками

Внутренняя структура IAM Proxy

- TLS/mTLS Layer - обрабатывает сертификаты и проверяет их на корректность, если это mTLS, то subject идёт дальше в Session Manager и там автоматически создаёт сессию с данным subject-id
- Session Manager - создаёт сессии, выходит из системы, обновляет токены
- Token Validator - проверяет корректность токенов JWT, при необходимости уточняет у СУДИР валидность access_token при работе через opaque
- Auth Flow Controller - отвечает за обработку code при OAuth 2.0, запрашивает у СУДИР необходимые разрешения и токены, инициирует создание сессии с полученными токенами и идентификаторами
- Authorization Engine - Проверяет, какие именно доступы были получены от СУДИР и какие надо выдать, если это новый пользователь. Использует токены, локальные правила RBAC/ABAC. Сопоставляет полученные от СУДИР данные с внутренними моделями доступа.
- Reverse Proxy Layer - Встраивает в итоговый запрос данные от Authorization Engine, удаляет ненужные заголовки, передаёт на рабочий сервер готовые данные добавляет заголовки X-User-*
Проблемы кибербезопасности
- Bypass Proxy
Если сервер принимает запросы не только от IAM Proxy, то прямой запрос на порт из недоверенного источника может сымитировать работу IAM, из-за чего злоумышленник получит нелегитимный доступ к ресурсу
- Header Spoofing
При первичной отправке заголовков злоумышленник подставляет аналогичные тем, что устанавливает IAM. Если IAM не удаляет все необходимые заголовки, то злоумышленник может получить расширенный доступ
- Применимы все уязвимости из OAuth 2.0
OAuth 2.0